% 相对论“匀加速”运动演示
% 需要compute_lorentz的函数
% 使用AI辅助
% Gitee Repo

clc
clear

% MCRF参数
dt0 = 0.01;
a0 = 0.1;

T = 10;

% 地面系
v1 = zeros(1000,3);
t1 = zeros(1000,1);

for tick = 1:floor(T/dt0)
    % 地面系t1时刻，地面系转换到MCRF
    % 此时MCRF中粒子4-速度显然为(c,0,0,0)，略去不写
    [L,g] = compute_lorentz(v1(tick,:)');

    % 在MCRF经历 dt0 时间后，粒子在MCRF中获得不为“零”的4-速度
    % 从MCRF转回地面系，4-速度相应变换
    U0 = [1;a0*dt0;0;0];
    U1 = inv(L)*U0;
    % 提取地面系中粒子的“常规”速度
    _v1 = U1(2:4)/U1(1);

    % 更新地面系“常规”速度
    v1(tick+1, :) = _v1;
    % 更新地面系时刻，由于钟慢尺缩，MCRF经历dt0，地面系经历dt=g*dt0
    t1(tick+1, 1) = t1(tick,1) + g*dt0;
end

figure
hold on
plot(t1, sqrt(sum(v1.^2, 2)), 'LineWidth', 1.5);  % 模拟结果
_t = 0:0.05:T;
_v = a0*_t ./ sqrt(1 + (a0*_t).^2);
plot(_t, _v, '--', 'LineWidth', 1.5);  % 理论解对比

% 添加标签和图例
xlabel('地面系时间 (t)');
ylabel('粒子速度 (v)');
legend('数值模拟', '理论解 (a_0t / \sqrt{1 + (a_0t)^2})', 'Location', 'southeast');
title('相对论“匀加速”运动');
grid on;
